// 对 axios 进行二次封装
import axios from 'axios'
// 引入进度条及其样式
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'

// 创建 axios 实例
const $axios = axios.create({
  // 跟路径
  baseURL: '/mock',
  // 请求超时时间
  timeout: 5000
})

// 请求拦截器，请求前做一些事情
$axios.interceptors.request.use(config => {
  // 进度条开始动
  nprogress.start()
  return config
})

// 响应拦截器
$axios.interceptors.response.use(
  res => {
    // 成功回调，返回服务器返回数据
    // 进度条消失
    nprogress.done()
    return res.data
  },
  error => {
    // 失败回调,终止 promise
    return Promise.reject(new Error('faile'))
  }
)

// 对外暴露
export default $axios
